using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adMenu : adGeneral
    {
        public adMenu(SqlConnection con)
        {
            conexion = con;
        }

        public enMenu fObtener(enMenu poenMenu)
        {
            enMenu oenMenu = null;
            SqlCommand cmd = new SqlCommand("sSEA_ObtenerMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pidMenu", SqlDbType.Int).Value = poenMenu.IdMenu;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdMenu");
                int pos_Contenedor = drd.GetOrdinal("iContenedor");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Decripcion = drd.GetOrdinal("vDescripcion");
                int pos_Orden = drd.GetOrdinal("iOrden");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_CodigoSistema = drd.GetOrdinal("iCodigoSistema");
                int pos_CodigoElemento = drd.GetOrdinal("iCodigoElemento");
                int pos_Sistema = drd.GetOrdinal("sistema");
                int pos_CodigoFormulario = drd.GetOrdinal("IdFormulario");

                while (drd.Read())
                {
                    oenMenu = new enMenu();
                    oenMenu.IdMenu = (drd.IsDBNull(pos_IdMenu) ? 0 : drd.GetInt32(pos_IdMenu));
                    oenMenu.Contenedor = (drd.IsDBNull(pos_Contenedor) ? 0 : drd.GetInt32(pos_Contenedor));
                    oenMenu.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenMenu.entDescripcion = new enDescripcion();
                    oenMenu.Descripcion = (drd.IsDBNull(pos_Decripcion) ? "" : drd.GetString(pos_Decripcion));
                    oenMenu.Orden = (drd.IsDBNull(pos_Orden) ? 0 : drd.GetInt32(pos_Orden));
                    oenMenu.CodigoEstado = (drd.IsDBNull(pos_CodigoEstado) ? 0 : drd.GetInt32(pos_CodigoEstado));
                    oenMenu.CodigoSistema = (drd.IsDBNull(pos_CodigoSistema) ? 0 : drd.GetInt32(pos_CodigoSistema));
                    oenMenu.entDescripcion.CodigoElemento = (drd.IsDBNull(pos_CodigoElemento) ? 0 : drd.GetInt32(pos_CodigoElemento));
                    oenMenu.entDescripcion.Descripcion = (drd.IsDBNull(pos_Sistema) ? "" : drd.GetString(pos_Sistema));
                    oenMenu.IdFormulario = (drd.IsDBNull(pos_CodigoFormulario) ? 0 : drd.GetInt32(pos_CodigoFormulario));
                }
            }
            return (oenMenu);
        }

        public List<enMenu> fListar(enMenu poenMenu)
        {
            List<enMenu> loenMenu = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdMenu");
                int pos_Contenedor = drd.GetOrdinal("iContenedor");
                int pos_CodigoTipo = drd.GetOrdinal("iCodigoTipo");
                int pos_CodigoSistema = drd.GetOrdinal("iCodigoSistema");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_IdFormulario = drd.GetOrdinal("IdFormulario");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_DescripcionRutaFormulario = drd.GetOrdinal("vDescripcionRutaFormulario");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                loenMenu = new List<enMenu>();
                enMenu oenMenu;
                while (drd.Read())
                {
                    oenMenu = new enMenu();
                    oenMenu.IdMenu = drd.GetInt32(pos_IdMenu);
                    oenMenu.Contenedor = (drd.IsDBNull(pos_Contenedor) ? 0 : drd.GetInt32(pos_Contenedor));
                    oenMenu.CodigoTipo = drd.GetInt32(pos_CodigoTipo);
                    oenMenu.CodigoSistema = (drd.IsDBNull(pos_CodigoSistema) ? 0 : drd.GetInt32(pos_CodigoSistema));
                    oenMenu.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenMenu.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenMenu.entFormulario = new enFormulario();
                    oenMenu.IdFormulario = (drd.IsDBNull(pos_IdFormulario) ? 0 : drd.GetInt32(pos_IdFormulario));
                    oenMenu.entFormulario.Decripcion = (drd.IsDBNull(pos_DescripcionRutaFormulario) ? "" : drd.GetString(pos_DescripcionRutaFormulario));
                    oenMenu.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    loenMenu.Add(oenMenu);
                }
            }
            return (loenMenu);
        }

        public List<enMenu> fListarPorPerfil(int poIdPerfil)
        {
            List<enMenu> loenMenu = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarMenuPorPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pviIdPerfil", SqlDbType.Int).Value = poIdPerfil;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdMenu");
                int pos_Contenedor = drd.GetOrdinal("iContenedor");
                int pos_CodigoTipo = drd.GetOrdinal("iCodigoTipo");
                int pos_CodigoSistema = drd.GetOrdinal("iCodigoSistema");
                int pos_NombreSistema = drd.GetOrdinal("nombreSistema");
                int pos_CodigoFormulario = drd.GetOrdinal("iIdFormulario");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_DescripcionRutaFormulario = drd.GetOrdinal("vDescripcionRutaFormulario");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_IdPerfilMenu = drd.GetOrdinal("IdPerfilMenu");
                loenMenu = new List<enMenu>();
                enMenu oenMenu;
                while (drd.Read())
                {
                    oenMenu = new enMenu();
                    oenMenu.IdMenu = drd.GetInt32(pos_IdMenu);
                    oenMenu.Contenedor = (drd.IsDBNull(pos_Contenedor) ? 0 : drd.GetInt32(pos_Contenedor));
                    oenMenu.CodigoTipo = drd.GetInt32(pos_CodigoTipo);
                    oenMenu.CodigoSistema = (drd.IsDBNull(pos_CodigoSistema) ? 0 : drd.GetInt32(pos_CodigoSistema));
                    oenMenu.entDescripcion = new enDescripcion();
                    oenMenu.entDescripcion.Descripcion = (drd.IsDBNull(pos_NombreSistema) ? "" : drd.GetString(pos_NombreSistema));
                    oenMenu.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenMenu.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenMenu.entFormulario = new enFormulario();
                    oenMenu.IdFormulario = (drd.IsDBNull(pos_CodigoFormulario) ? 0 : drd.GetInt32(pos_CodigoFormulario));
                    oenMenu.entFormulario.Decripcion = (drd.IsDBNull(pos_DescripcionRutaFormulario) ? "" : drd.GetString(pos_DescripcionRutaFormulario));
                    oenMenu.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    oenMenu.pIdMenuPerfil = (drd.IsDBNull(pos_IdPerfilMenu) ? 0 : drd.GetInt32(pos_IdPerfilMenu));
                    loenMenu.Add(oenMenu);
                }
            }
            return (loenMenu);
        }

        public List<enMenu> fReporteListarMenuPorPerfil(int poIdPerfil)
        {
            List<enMenu> loenMenu = null;
            SqlCommand cmd = new SqlCommand("sSEA_ReporteListarMenuPorPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@IdPerfil", SqlDbType.Int).Value = poIdPerfil;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdMenu");
                int pos_Contenedor = drd.GetOrdinal("iContenedor");
                int pos_CodigoTipo = drd.GetOrdinal("iCodigoTipo");
                int pos_CodigoSistema = drd.GetOrdinal("iCodigoSistema");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_NombrePerfil = drd.GetOrdinal("nombrePerfil");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                loenMenu = new List<enMenu>();
                enMenu oenMenu;
                while (drd.Read())
                {
                    oenMenu = new enMenu();
                    oenMenu.IdMenu = drd.GetInt32(pos_IdMenu);
                    oenMenu.Contenedor = (drd.IsDBNull(pos_Contenedor) ? 0 : drd.GetInt32(pos_Contenedor));
                    oenMenu.CodigoTipo = drd.GetInt32(pos_CodigoTipo);
                    oenMenu.CodigoSistema = (drd.IsDBNull(pos_CodigoSistema) ? 0 : drd.GetInt32(pos_CodigoSistema));
                    oenMenu.entDescripcion = new enDescripcion();
                    oenMenu.entDescripcion.Descripcion = (drd.IsDBNull(pos_NombrePerfil) ? "" : drd.GetString(pos_NombrePerfil));
                    oenMenu.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenMenu.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenMenu.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    loenMenu.Add(oenMenu);
                }
            }
            return (loenMenu);
        }

        public List<enMenu> fListarPorSistema(int poIdSistema)
        {
            List<enMenu> loenMenu = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarMenuPorSistema", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pviCodigoSistema", SqlDbType.Int).Value = poIdSistema;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdMenu");
                int pos_Contenedor = drd.GetOrdinal("iContenedor");
                int pos_CodigoTipo = drd.GetOrdinal("iCodigoTipo");
                int pos_CodigoSistema = drd.GetOrdinal("iCodigoSistema");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_IdFormulario = drd.GetOrdinal("IdFormulario");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_DescripcionRutaFormulario = drd.GetOrdinal("vDescripcionRutaFormulario");
                int pos_NombreSistema = drd.GetOrdinal("NombreSistema");

                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                loenMenu = new List<enMenu>();
                enMenu oenMenu;
                while (drd.Read())
                {
                    oenMenu = new enMenu();
                    oenMenu.IdMenu = drd.GetInt32(pos_IdMenu);
                    oenMenu.Contenedor = (drd.IsDBNull(pos_Contenedor) ? 0 : drd.GetInt32(pos_Contenedor));
                    oenMenu.CodigoTipo = drd.GetInt32(pos_CodigoTipo);
                    oenMenu.CodigoSistema = (drd.IsDBNull(pos_CodigoSistema) ? 0 : drd.GetInt32(pos_CodigoSistema));
                    oenMenu.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenMenu.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenMenu.entFormulario = new enFormulario();
                    oenMenu.IdFormulario = (drd.IsDBNull(pos_IdFormulario) ? 0 : drd.GetInt32(pos_IdFormulario));
                    oenMenu.entFormulario.Decripcion = (drd.IsDBNull(pos_DescripcionRutaFormulario) ? "" : drd.GetString(pos_DescripcionRutaFormulario));
                    oenMenu.entDescripcion = new enDescripcion();
                    oenMenu.entDescripcion.Descripcion = (drd.IsDBNull(pos_NombreSistema) ? "" : drd.GetString(pos_NombreSistema));
                    oenMenu.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    loenMenu.Add(oenMenu);
                }
            }
            return (loenMenu);
        }

        public int fRegistrar(enMenu poenMenu)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_RegistrarMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiContenedor", SqlDbType.Int).Value = poenMenu.Contenedor;
            cmd.Parameters.Add("@piiCodigoTipo", SqlDbType.Int).Value = poenMenu.CodigoTipo;
            cmd.Parameters.Add("@piiCodigoSistema", SqlDbType.Int).Value = poenMenu.CodigoSistema;
            cmd.Parameters.Add("@piOrden", SqlDbType.Int).Value = poenMenu.Orden;
            cmd.Parameters.Add("@piiIdFormulario", SqlDbType.Int).Value = poenMenu.IdFormulario;
            cmd.Parameters.Add("@pivNombre", SqlDbType.VarChar).Value = poenMenu.Nombre;
            cmd.Parameters.Add("@pivDescripcion", SqlDbType.VarChar).Value = poenMenu.Descripcion;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenMenu.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenMenu.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenMenu.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMacCreacion", SqlDbType.VarChar).Value = poenMenu.AudMacCreacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return N;
        }

        public int fModificar(enMenu poenMenu)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_ModificarMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdMenu", SqlDbType.Int).Value = poenMenu.IdMenu;
            cmd.Parameters.Add("@piiCodigoTipo", SqlDbType.Int).Value = poenMenu.CodigoTipo;
            cmd.Parameters.Add("@piiIdFormulario", SqlDbType.Int).Value = poenMenu.IdFormulario;
            cmd.Parameters.Add("@pivNombre", SqlDbType.VarChar).Value = poenMenu.Nombre;
            cmd.Parameters.Add("@pivDescripcion", SqlDbType.VarChar).Value = poenMenu.Descripcion;
            cmd.Parameters.Add("@piOrden", SqlDbType.Int).Value = poenMenu.Orden;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenMenu.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenMenu.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenMenu.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenMenu.AudMacModificacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return (N);
        }

        public int fEliminar(enMenu poenMenu)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_EliminarMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdMenu", SqlDbType.Int).Value = poenMenu.IdMenu;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenMenu.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenMenu.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenMenu.AudMacModificacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return (N);
        }

        public int fContar()
        {
            int totalMenu;
            SqlCommand cmd = new SqlCommand("sSEA_ContarMenu", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalMenu = (int)cmd.ExecuteScalar();
            return (totalMenu);
        }
    }
}


